"""
设计模式使用示例
这个文件展示了工厂模式和观察者模式的简单用法
"""
import sys
import os
# 添加项目根目录到路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from tools.factory import NotificationFactory
from tools.observer import post_observer, PostEvent


def demo_factory_pattern():
    """工厂模式演示"""
    print("=" * 50)
    print("工厂模式演示")
    print("=" * 50)
    
    # 创建不同类型的通知处理器
    email_handler = NotificationFactory.create_handler('email')
    sms_handler = NotificationFactory.create_handler('sms')
    push_handler = NotificationFactory.create_handler('push')
    
    # 使用处理器发送通知
    email_handler.send("你的帖子有新的点赞！")
    sms_handler.send("有人评论了你的帖子")
    push_handler.send("你的帖子被收藏了")


def demo_observer_pattern():
    """观察者模式演示"""
    print("\n" + "=" * 50)
    print("观察者模式演示")
    print("=" * 50)
    
    # 模拟帖子被点赞事件
    like_event = PostEvent(event_type='like', post_id=1, user_id=100)
    print("\n📌 用户点赞了帖子，触发观察者...")
    post_observer.notify(like_event)
    
    # 模拟帖子被浏览事件
    view_event = PostEvent(event_type='view', post_id=1, user_id=101)
    print("\n📌 用户浏览了帖子，触发观察者...")
    post_observer.notify(view_event)


if __name__ == "__main__":
    demo_factory_pattern()
    demo_observer_pattern()

